// 安全的全局加载工具函数
// 用于处理页面中可能出现的 showGlobalLoading 方法不存在的问题

/**
 * 安全地显示全局加载
 * @param {Object} pageInstance - 页面实例
 * @param {string} text - 加载文本
 */
function safeShowGlobalLoading(pageInstance, text = '加载中...') {
  try {
    // 首先尝试调用页面实例的方法
    if (pageInstance && typeof pageInstance.showGlobalLoading === 'function') {
      pageInstance.showGlobalLoading(text)
      return true
    }
  } catch (error) {
    console.warn('页面showGlobalLoading方法调用失败:', error)
  }
  
  try {
    // 如果页面方法失败，直接调用app的方法
    const app = getApp()
    if (app && typeof app.showGlobalLoading === 'function') {
      app.showGlobalLoading({
        loadingText: text
      })
      return true
    }
  } catch (error) {
    console.error('app.showGlobalLoading调用失败:', error)
  }
  
  console.warn('无法显示全局加载效果')
  return false
}

/**
 * 安全地隐藏全局加载
 * @param {Object} pageInstance - 页面实例
 */
function safeHideGlobalLoading(pageInstance) {
  try {
    // 首先尝试调用页面实例的方法
    if (pageInstance && typeof pageInstance.hideGlobalLoading === 'function') {
      pageInstance.hideGlobalLoading()
      return true
    }
  } catch (error) {
    console.warn('页面hideGlobalLoading方法调用失败:', error)
  }
  
  try {
    // 如果页面方法失败，直接调用app的方法
    const app = getApp()
    if (app && typeof app.hideGlobalLoading === 'function') {
      app.hideGlobalLoading()
      return true
    }
  } catch (error) {
    console.error('app.hideGlobalLoading调用失败:', error)
  }
  
  console.warn('无法隐藏全局加载效果')
  return false
}

/**
 * 安全地更新全局加载状态
 * @param {Object} pageInstance - 页面实例
 * @param {Object} data - 更新数据
 */
function safeUpdateGlobalLoading(pageInstance, data) {
  try {
    if (pageInstance && typeof pageInstance.updateGlobalLoading === 'function') {
      pageInstance.updateGlobalLoading(data)
      return true
    }
  } catch (error) {
    console.warn('页面updateGlobalLoading方法调用失败:', error)
  }
  
  console.warn('无法更新全局加载状态')
  return false
}

module.exports = {
  safeShowGlobalLoading,
  safeHideGlobalLoading,
  safeUpdateGlobalLoading
}
